let importing = false;//是否正在导入中
let cancelImportData = false;//取消导入
let isBranchCompany;
let companyList=[];
let errorData=[];
// var exportType = 3;
//防止表头与表格不对齐
$(window).resize(function () {
    $('#financialFlow').bootstrapTable('resetView');
    $('#errorDetail').bootstrapTable('resetView');
});
$(function () {
    getCurrentInfo();
    $('#addTransactionDate').datetimepicker({
        format: 'YYYY-MM-DD HH:mm:ss',
        locale: moment.locale('zh-cn')
    }).on('dp.hide',function (event){
        if($('#addFlowForm').data('bootstrapValidator')!=null){
            $('#addFlowForm').data('bootstrapValidator')
                .updateStatus('addTransactionDate', 'NOT_VALIDATED',null)
                .validateField('addTransactionDate');
        }
    });
    $('#yearSelect').datepicker({
        language: 'zh-CN',
        startView: 'decade',
        endView: 'decade',
        maxViewMode: 'decade',
        minViewMode: 'decade',
        format: 'yyyy',
        autoclose:true,
        clearBtn:true,
        todayHighlight: true
    });
    $('#monthSelect').datepicker({
        language: 'zh-CN',
        startView: 'month',
        endView: 'month',
        maxViewMode: 'year',
        minViewMode: 'year',
        format: 'mm',
        autoclose: true,
        clearBtn:true,
        todayHighlight: true
    });
    let date=new Date();
    $('#yearSelect').datepicker('setDate',String(date.getFullYear()));
    $('#monthSelect').datepicker('setDate',String(date.getMonth()+1));
    $('#yearSelect').on('changeDate',function(){
        var yearDate = $('#yearSelect').val();
        if (yearDate.length!=4) {
            $('#monthSelect').val('');
            $('#monthSelect').datepicker('destroy');
            $('#monthSelect').attr({'disabled':'disabled'});
        }else{
            $('#monthSelect').removeAttr('disabled');
            $('#monthSelect').datepicker('destroy').datepicker({
                language: 'zh-CN',
                startView: 'month',
                endView: 'month',
                maxViewMode: 'year',
                minViewMode: 'year',
                format: 'mm',
                autoclose: true,
                clearBtn:true,
                todayHighlight: true
            });
        }
        financialFlow(1);
        getMonthTotal();

    });
    $('#monthSelect').on('changeDate',function(){
        financialFlow(1);
        getMonthTotal();
    })
    $('.datepicker').datepicker({
        language: "zh-CN",
        autoclose: true,
        clearBtn: true,
        todayHighlight: true,
        format: "yyyy-mm-dd"
    }).on('changeDate',function(){
        financialFlow(2);
    })
    financialFlow(1);
    getMonthTotal();
    // 选择上传文件时，显示文件名称
    $('#importInput').on('change', function () {
        $('#progress > div').css('width', '0%');
        var file = document.getElementById('importInput').files[0];
        if (file) {
            $('#nameText').html(file.name);
            $('#progress').show();
        } else {
            $('#nameText').html('点击选择模板');
            $('#progress').hide();
        }
    });

    // 关闭上传弹窗时，重置弹窗内容状态
    $('#importTemplate').on('hidden.bs.modal', function () {
        btnLoading && btnLoading.button('reset');
        $('#importInput').val('');
        $('#nameText').html('点击选择模板');
        $('#progress').hide();
    });

    // 关闭关联订单弹窗
    $('#relationModal').on('hidden.bs.modal', function () {
        $('.search-group').removeClass('search-result');
        $('#relationModal .well, #relationModal .modal-footer').hide();
        $('#relationModal input').val('');
    });
    $('#searchOrderBtn').on('click', function () {
        var orderNumber = $.trim($('#searchOrderValue').val());
        if (!orderNumber) {
            promptInfo('提醒', '订单编码不能为空！');
            return;
        }
        searchOrder(orderNumber);
    });
    getCompanyList('companySelect');
    getCompanyList('addCompanySelect');
    getBankRelateSwitch();
});
/**
 * 加载全部公司信息
 */
function getCompanyList(id) {
    $.getJSON("/company/getCompanyList", function (data) {
        if (data.code == '000000') {
            companyList=data.data;
            var companyOptionHtml = '<option value="">请选择所属分公司</option>';
            data.data.map(function (item) {
                companyOptionHtml += '<option value="' + item.companyId + '">' + item.companyName + '</option>';
            });
            $(`#${id}`).html("");
            $(`#${id}`).append(companyOptionHtml);
            $(`#${id}`).selectpicker('refresh');
        }
    });
}
//拿到公司对应id
function getCompanyId(data,companyName){
    let companyId='';
    data.filter(function(item,index){
        if(item.companyName==companyName){
            companyId=item.companyId
        }
    })
    return companyId
}

/*$("#importTemplate").on('shown.bs.modal', function () {
    $('#searchCompanySelect').val('').selectpicker('refresh');
})*/
function editBankFlow() {
    var productOrderId = $('#productOrderId').val();
    parent.$(parent.document).data('multitabs').create({
        iframe : true,
        title : '订单详情',
        url : "/front/finance/orderInfo?productOrderId=" + productOrderId
    }, true);
}

// 上传按钮处理中状态
var btnLoading;
function yearMonthClear(){
    $("input.datepickerCon").val("");
    $('#monthSelect').attr({'disabled':'disabled'});
    $('#yearSelect').datepicker('destroy').datepicker({
        language: 'zh-CN',
        startView: 'decade',
        endView: 'decade',
        maxViewMode: 'decade',
        minViewMode: 'decade',
        format: 'yyyy',
        autoclose:true,
        clearBtn:true,
        todayHighlight: true
    });
    getMonthTotal();
}
function customTimeClear(){
    $("#customInput").find("input.datepicker").val('');
    $('.datepicker').datepicker('destroy').datepicker({
        language: "zh-CN",
        autoclose: true,
        clearBtn: true,
        todayHighlight: true,
        format: "yyyy-mm-dd"
    })
}

function financialFlow(type) {
    //type=1:根据 年、月查询；type=2:根据自定义时间查询；type=3:流水号查询;type=4:高级筛选
    $('#financialFlow').bootstrapTable('destroy');
    $('#financialFlow').bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/bankFlow/queryData',
        height:600,
        method: 'get',                                      // 请求方式
        contentType: 'application/x-www-form-urlencoded',   // 请求内容类型
        dataType: 'json',                                   // 数据类型
        striped: true,                                      // 是否显示行间隔色
        sortable: true,                                     // 是否启用排序
        sortOrder: 'desc',                                  // 排序方式
        sortName: 'createTm',                               // 排序字段
        cache: false,                                       // 是否使用缓存
        showColumns: false,                                 // 显示隐藏列
        showRefresh: false,                                 // 显示刷新按钮
        showToggle: false,                                  // 切换显示样式
        showFooter: false,                                  // 显示Table脚部
        pagination: true,                                   // 是否显示分页
        showPaginationSwitch: false,                        // 是否显示分页按钮
        clickToSelect: true,                                // 是否启用点击选中行
        maintainSelected: true,                             // 分页是否保留选中
        singleSelect: false,
        undefinedText: '-',                                 // cell没有值时显示
        sidePagination: 'server',                           // 分页方式：client客户端分页，server服务端分页
        uniqueId: 'transactionNo',
        idField: 'transactionNo',
        pageNumber: 1,
        pageSize: globalPageSize,                           // 每页的记录行数
        pageList: globalPageList,                           // 可供选择的每页的行数

        fixedColumns: true,     // 冻结列
        fixedNumber: 2,         // 左侧固定列
        fixedRightNumber: 2,    // 右侧固定列

        queryParams: function (params) {
            params.pageSize = params.limit;
            params.pageIndex = (params.offset / params.limit) + 1;
            if(type==1){
                params.queryYear = $("#yearSelect").val();
                params.queryMonth = $("#monthSelect").val();
                customTimeClear();
                $("#transactionNo").val("");
                /*reset();*/
                params.companyId=$("#companySelect").val();
                params.relationState=$("#relationState").val();
                params.oppositeCompany=$.trim($("#oppositeCompany").val());
                closeFilterContainer();
            }else if(type==2){
                params.customStartDate = $("#startTm").val();
                params.customEndDate = $("#endTm").val();
                yearMonthClear();
                $("#transactionNo").val("");
                /*reset();*/
                params.companyId=$("#companySelect").val();
                params.relationState=$("#relationState").val();
                params.oppositeCompany=$.trim($("#oppositeCompany").val());
                closeFilterContainer();
            }else if(type==3){
                params.transactionNo = $.trim($('#transactionNo').val());//交易流水
                yearMonthClear();
                customTimeClear();
                reset();
                closeFilterContainer();
            }else if(type==4){
                //高级筛选
               /* yearMonthClear();
                customTimeClear();*/
                params.customStartDate = $("#startTm").val();
                params.customEndDate = $("#endTm").val();
                params.queryYear = $("#yearSelect").val();
                params.queryMonth = $("#monthSelect").val();
                $("#transactionNo").val("");
                params.companyId=$("#companySelect").val();
                params.relationState=$("#relationState").val();
                params.oppositeCompany=$.trim($("#oppositeCompany").val());
            }
            return params
        },  // 查询参数
        columns: [
            {title: '主键', field: 'customerProductId', visible: false},
            {title: '订单ID', field: 'productOrderId', visible: false},
            {
                title: '序号', align: 'left', valign: 'middle', width: '50',
                formatter: function (value, row, index) {
                    return index + 1;
                }
            },
            {title: '交易流水号', field: 'transactionNo', align: 'left', valign: 'middle'},
            {title: '交易日期', field: 'transactionDate', align: 'left', valign: 'middle'},
            {title: '对方单位', field: 'oppositeCompany', align: 'left', valign: 'middle'},
            {title: '贷方金额', field: 'creditMoney', align: 'left', valign: 'middle'},
            {title: '可用金额', field: 'availableAmount', align: 'left', valign: 'middle'},
            {title: '已用金额', field: 'usedAmount', align: 'left', valign: 'middle'},
            {title: '所属分公司', field: 'companyName', align: 'left', valign: 'middle',visible:isBranchCompany=='Y'?false:true},
            {title: '摘要', field: 'abstracts', align: 'left', valign: 'middle', formatter : function(value, row, index, field){
                    var values=value?value:'-';
                    return `<span style='display: inline-block;overflow: hidden;text-overflow: ellipsis;max-width:inherit;white-space: nowrap;' data-toggle='tooltip' data-placement="top" data-original-title="${values}">${values}</span>`;
                },
                cellStyle : function(value, row, index, field){
                    return {
                        css: {
                            "white-space": "nowrap",
                            "text-overflow": "ellipsis",
                            "overflow": "hidden",
                            "max-width":"200px"
                        }
                    };
                }},
            {title: '关联状态', field: 'relationState', align: 'left', valign: 'middle', formatter: format.state},
            {title: '操作', field: 'operate', align: 'right', valign: 'middle',events: operateEvents,formatter: format.operate},
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function (data) {
            $("[data-toggle='tooltip']").tooltip({
                "container": 'body',
            })
        },
        onLoadError: function (status) {
            if (status == 403) {
                $.alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                $.alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}

var format = {
    state: function (value, row) {
        /*switch (value) {
            case 'Y':
                return '<span class="label label-success-light">已关联</span>';
                break;
            case 'N':
                return '<span class="label label-warning-light">未关联</span>';
                break;
            default:
                return '-'
        }*/

        switch (value) {
            case 'Y':
                return '<span class="label label-success-light">已关联</span>';
                break;
            case 'N':
                return '<span class="label label-warning-light">未关联</span>';
                break;
            case 'B':
                return '<span class="label label-yellow-light ">部分关联</span>';
                break;
        }
    },
    operate: function (value, row) {
        // if (row.relationState == 'N') {
        //     html += '<button type="button" class="btn btn-default" onclick="relationModal(\'' + row.transactionNo + '\')"><i class="mdi mdi-tumblr-reblog"></i>关联</button>';
        // }
        var html = '<button type="button" class="btn btn-default" id="detail"><i class="mdi mdi-eye"></i>查看</button><button type="button" class="btn btn-default" id="delete"><i class="mdi mdi-delete"></i>删除</button>';
        return html;
    },
    editOperate: function (value, row) {
        var html = '<button type="button" class="btn btn-default editDetail" id="editDetail"><i class="mdi mdi-table-edit"></i>编辑</button>';
        return html;
    },
    bankFlowOperate: function (value, row) {
        var html = '<button type="button" class="btn btn-default" onclick="editBankFlow()"><i class="mdi mdi-pencil"></i>修改</button>';
        return html;
    }
}
window.operateEvents = {
    //查看点击事件
    'click #detail': function (e, value, row, index) {
        detailModal(row)
    },
    'click #editDetail': function (e, value, row, index) {
        openAddFlowModal(row,index)
    },
    'click #delete': function (e, value, row, index) {
        $.confirm({
            title: '提示',
            content: `是否确认删除`,
            buttons: {
                confirm: {
                    text: '确认',
                    btnClass: 'btn-primary',
                    action: function () {
                        deleteFlow(row)
                    }
                },
                cancel: {
                    text: '取消',
                    btnClass: 'btn-primary',
                    action: function () {
                        return;
                    }
                }
            }
        });


    },
}
function deleteFlow(row){
    $.ajax({
        url: '/bankFlow/delete?flowId='+row.flowId,
        type: 'GET',
        dataType: 'json',
        async : false,
        success:(function(data) {
            if(data.code=='000000'){
                $.alert("删除成功");
                financialFlow(1);
                getMonthTotal();
            }else{
                $.alert(data.message);
            }

        })
    });
}
/**
 * 功能：下载模板
 * 接口：@袁云枫
 */
function downCallTemplate() {
    var url = "/bankFlow/downloadTemplate";
    window.location.href = encodeURI(encodeURI(url));
}

/**
 * 功能：导入模板
 * 接口：@袁云枫
 * */
let readRow;//导入的行数
let totalReadRow;//导入的总行数
let timeInterval;//获得导入进度
function importAction(element) {
    readRow=0;
    totalReadRow=0;
    cancelImportData=false;
    btnLoading = $(element).button('loading');
    var file = document.getElementById('importInput').files[0];
    // 验证是否选择上传文件
    if(!file){
        $.alert({
            title: '提示',
            content: '请选择要上传的文件！',
        });
        btnLoading.button('reset');
        return;
    }
    // 禁用取消按钮
    // $(element).next('button').prop('disabled', true);
    $('#progress').show();
    var fileType = file.name.substring(file.name.lastIndexOf("."), file.name.length);
    var formData = new FormData();
    // 接口接收参数 键值形式 添加到formData中
    formData.append('file', file);
    /*if(isBranchCompany!='Y'){
        if($("#searchCompanySelect").val()){
            formData.append('companyId', $("#searchCompanySelect").val());
        }else{
            $.alert('请选择所属分公司');
            btnLoading.button('reset');
            return;
        }
    }else{
        formData.append('companyId','');
    }*/
    if(fileType.toLocaleUpperCase()==".XLSX"){
        importing = true;//导入中
        $.ajax({
            url: '/bankFlow/import',
            type: 'POST',
            dataType: 'json',
            contentType: false,
            data: formData,
            processData: false,
            xhr: function() {
                var xhr = new XMLHttpRequest();
                // 使用XMLHttpRequest.upload监听上传过程，注册progress事件，打印回调函数中的event事件
                xhr.upload.addEventListener('progress', function (e) {
                    // console.log(e);
                    // loaded代表上传了多少
                    // total代表总数为多少
                    timeInterval=setInterval(function(){
                        let progressData=getUploadProgress();
                        // var progressRate = (e.loaded / e.total) * 100 + '%';
                        readRow = progressData.readRow;
                        totalreadRow = progressData.totalCount;
                        var progressRate = progressData.percent + '%';
                        //通过设置进度条的宽度达到效果
                        $('#progress > div').animate({
                            width: progressRate
                        }, 100);
                        if(progressData.percent==100){
                            clearInterval(timeInterval);
                        }
                    },300)

                })
                return xhr;
            },
            success:(function(data) {
                importing = false;//导入结束
                clearInterval(timeInterval);
                if(data.code == '000000'){
                    $('#progress > div').animate({
                        width: '100%'
                    }, 100);
                    // setTimeout(function () {

                    $('#progress > div').css('width', '0%');
                    if(!cancelImportData){
                        $('#importTemplate').modal('hide');
                        $("#importDetailModal").modal('show');
                        setTimeout(function(){
                            errorData=data.data.bankDetail;
                            importDetail(data.data);
                        },300)

                    }else{
                        //因为导入数据在取消导入时并没有结束导入，后端会在触发取消后删除数据，但导入功能还在继续又重新导入进去了，所以在导入完成时需要重新删除一遍
                        // importCancel()
                    }
                    // 重置立即导入按钮状态
                    btnLoading.button('reset');
                    $('#financialFlow').bootstrapTable('refresh');

                }else{
                    promptInfo('失败', '导入失败，请重试！', function () {
                        $('#progress > div').css('width', '0%');
                    });
                    uploadReset();
                    // 重置立即导入按钮状态
                    btnLoading.button('reset');
                }
                // 取消禁用取消按钮
                // $(element).next('button').prop('disabled', false);
            }),
            error:(function() {
                importing = false;//导入结束
                clearInterval(timeInterval);
                promptInfo('失败', '导入出错，请重试！', function () {
                    $('#progress > div').css('width', '0%');
                });
                uploadReset();
                btnLoading.button('reset');
                // 取消禁用取消按钮
                // $(element).next('button').prop('disabled', false);
            })
        });
    } else {
        promptInfo('提示', '模板格式类型必须为“.xlsx”，请重新选择！');
        uploadReset();
        btnLoading.button('reset');
    }
}
// 获得导入进度信息
function getUploadProgress(){
    let progressData={};
    $.ajax({
        url: '/bankFlow/getUploadProgress',
        type: 'GET',
        dataType: 'json',
        contentType: false,
        async : false,
        data:{},
        success:(function(data) {
            progressData=data;
        })
    });
    return progressData

}
function importCancel(){
    $.ajax({
        url: '/bankFlow/cancel?readRow='+readRow,
        type: 'GET',
        dataType: 'json',
        contentType: false,
        async : false,
        success:(function(data) {
            console.log('取消成功')
        })
    });
}
//取消（中断导入流水）
function cancel(){
    clearInterval(timeInterval);
    $.ajax({
        url: '/bankFlow/cancel?readRow='+readRow,
        type: 'GET',
        dataType: 'json',
        contentType: false,
        async : false,
        success:(function(data) {
            if(data.code=='000000'){
                $.alert("取消成功")
                uploadReset();
                btnLoading.button('reset');
            }else{
                $.alert(data.message)
            }
        }),
        error:(function() {
            $.alert("请求失败")
        })
    });
}
function cancelImport(){
    if(importing){
        if(readRow!=0&&readRow-1!=totalReadRow){
            cancelImportData=true;
            cancel()
        }else{
            $.alert("导入即将完成，不能取消")
        }
    }else{
        $('#importTemplate').modal('hide');
    }

}

// 重置上传模块
function uploadReset() {
    $('#importInput').val('');
    $('#nameText').html('点击选择模板');
    $('#progress').hide();
}
function splicingParams(obj){
    var paramsStr='';
    for(var key in obj){
        paramsStr+=(key+"="+obj[key])+'&'
    }
    return paramsStr.substring(0,paramsStr.lastIndexOf('&'))
}

/**
 * 功能：订单详情
 * */
function detailModal(data){
    openTab('流水信息','/front/finance/query?'+splicingParams(data));
    // $('#productOrderId').val(productOrderId);
    // var tankFlowTable = $('#bankFlowTable');
    // // 重置订单详情内容
    // $('.order-info p').html('-');
    // $('#detailModal').modal('show');
    // // 流水详情表格初始化
    // tankFlowTable.bootstrapTable('destroy');
    // tankFlowTable.bootstrapTable({
    //     classes: 'table table-bordered table-hover table-striped',
    //     // data: bankFlowSubList,
    //     dataType: 'json',                                   // 数据类型
    //     striped: true,                                      // 是否显示行间隔色
    //     sortable: true,                                     // 是否启用排序
    //     sortOrder: 'desc',                                  // 排序方式
    //     sortName: 'createTm',                               // 排序字段
    //     pagination: true,                                   // 是否显示分页
    //     undefinedText: '-',                                 // cell没有值时显示
    //     sidePagination: 'client',                           // 分页方式：client客户端分页，server服务端分页
    //     uniqueId: 'transactionNo',
    //     idField: 'transactionNo',
    //     pageNumber: 1,
    //     pageSize: 5,                                        // 每页的记录行数
    //     pageList: [5, 10, 20],                              // 可供选择的每页的行数
    //
    //     fixedColumns: true,     // 冻结列
    //     fixedNumber: 1,         // 左侧固定列
    //     fixedRightNumber: 1,    // 右侧固定列
    //
    //     queryParams: function (params) {                    // 查询参数
    //         params.pageSize = params.limit;
    //         params.pageIndex = (params.offset / params.limit) + 1;
    //         params.sortName = params.sort;
    //         params.sortOrder = params.order;
    //         return params
    //     },
    //     columns: [
    //         {
    //             title: '序号', align: 'left', valign: 'middle', width: '50',
    //             formatter: function (value, row, index) {
    //                 return index + 1;
    //             }
    //         },
    //         {title: '交易流水号', field: 'transactionNo', align: 'left', valign: 'middle'},
    //         {title: '付款单位', field: 'oppositeCompany', align: 'left', valign: 'middle'},
    //         {title: '付款账号', field: 'oppositeBankAccount', align: 'left', valign: 'middle'},
    //         {title: '到款时间', field: 'createTime', align: 'left', valign: 'middle'},
    //         {title: '到款金额', field: 'creditMoney', align: 'left', valign: 'middle'},
    //         {title: '收款方名称', field: 'payeeName', align: 'left', valign: 'middle'},
    //         {title: '录入人', field: 'createPeople', align: 'left', valign: 'middle'},
    //         {title: '状态', field: 'relationState', align: 'left', valign: 'middle',
    //             formatter: function (value, row) {
    //                 switch (value) {
    //                     case 'Y':
    //                         return '<span class="label label-success-light">已关联</span>';
    //                         break;
    //                     case 'N':
    //                         return '<span class="label label-warning-light">未关联</span>';
    //                         break;
    //                     case 'F':
    //                         return '<span class="label label-brown-light">关联失败</span>';
    //                         break;
    //                 }
    //             }
    //         },
    //         // {title: '操作', field: 'operate', align: 'right', valign: 'middle', formatter: format.bankFlowOperate},
    //     ],
    //     responseHandler: function (result) {
    //         if (result.code == "000000") {
    //             var obj = {
    //                 "rows": result.data,
    //                 "total": result.totalRecords//总条数
    //             };
    //         } else {
    //             var obj = {
    //                 "total": 0,
    //                 "rows": [],
    //             }
    //         }
    //         return obj;
    //     },
    //     onLoadSuccess: function (data) {
    //         // console.log(data)
    //     },
    //     onLoadError: function (status) {
    //         if (status == 403) {
    //             $.alert("权限不足！禁止访问！");
    //         } else {
    //             //加载失败时执行
    //             $.alert("加载失败！");
    //         }
    //     },
    //     formatLoadingMessage: function () {
    //         return "请稍等，加载中...";
    //     },
    //     formatNoMatches: function () {
    //         return '无符合条件的记录';
    //     },
    // });
    // tankFlowTable.bootstrapTable('showLoading');
    // $.ajax({
    //     url: '/bankFlow/queryInfo',
    //     type: 'GET',
    //     dataType: 'json',
    //     data: {
    //         productOrderId
    //     },
    //     success:(function(data) {
    //         if(data.code == '000000'){
    //             var orderDetailVO = data.data.orderDetailVO;        // 订单详情数据
    //             var bankFlowSubList = data.data.bankFlowSubList;    // 流水数据
    //
    //             // 订单状态--1:等待回款;2:已完成;3:作废;4:部分回款（回款维护）
    //             var orderStatus;
    //             switch (orderDetailVO.orderStatus) {
    //                 case '1':
    //                     orderStatus = '<span class="label label-warning-light">等待回款</span>';
    //                     break;
    //                 case '2':
    //                     orderStatus = '<span class="label label-success-light">已完成</span>';
    //                     break;
    //                 case '3':
    //                     orderStatus = '<span class="label label-brown-light">作废</span>';
    //                     break;
    //                 case '4':
    //                     orderStatus = '<span class="label label-info-light">部分回款</span>';
    //                     break;
    //             }
    //
    //             $('#infoOrderNumber').html(orderDetailVO.orderNumber);
    //             $('#infoContractNumber').html(orderDetailVO.contractNumber);
    //             $('#infoOrderStatus').html(orderStatus);
    //             $('#infoCustomerName').html(orderDetailVO.customerName);
    //             $('#infoUserName').html(orderDetailVO.userName);
    //             $('#infoCompanyName').html(orderDetailVO.companyName);
    //             $('#infoCreateTm').html(orderDetailVO.createTm);
    //             tankFlowTable.bootstrapTable('hideLoading').bootstrapTable('load', bankFlowSubList);
    //             setTimeout(function () {
    //                 tankFlowTable.bootstrapTable('resetView');
    //             }, 200)
    //         }else{
    //             $.alert('失败');
    //         }
    //     }),
    //     error:(function() {
    //         $.alert('出错！');
    //     })
    // });
    // detailProductTable(productOrderId);
}

function detailProductTable(productOrderId) {
    $('#detailProductTable').bootstrapTable('destroy');
    $('#detailProductTable').bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/order/selectCustomerProductOrderDetailList',
        method: 'post',                                     // 请求方式
        contentType: "application/x-www-form-urlencoded",   // 请求内容类型
        dataType: 'json',                                   // 数据类型
        striped: true,                                      // 是否显示行间隔色
        sortable: true,                                     // 是否启用排序
        sortOrder: 'desc',                                  // 排序方式
        sortName: 'createTm',                               // 排序字段
        cache: false,                                       // 是否使用缓存
        showColumns: false,                                 // 显示隐藏列
        showRefresh: false,                                 // 显示刷新按钮
        showToggle: false,                                  // 切换显示样式
        showFooter: false,                                  // 显示Table脚部
        pagination: true,                                   // 是否显示分页
        showPaginationSwitch: false,                        // 是否显示分页按钮
        clickToSelect: true,                                // 是否启用点击选中行
        maintainSelected: true,                             // 分页是否保留选中
        singleSelect: false,
        undefinedText: '-',                                 // cell没有值时显示
        sidePagination: "server",                           // 分页方式：client客户端分页，server服务端分页
        uniqueId: 'transactionNo',
        idField: 'transactionNo',
        pageNumber: 1,
        pageSize: 5,                                        // 每页的记录行数
        pageList: [5, 10, 20],                              // 可供选择的每页的行数

        fixedColumns: true,     // 冻结列
        fixedNumber: 2,         // 左侧固定列
        fixedRightNumber: 2,    // 右侧固定列

        queryParams: function (params) {
            params.pageSize = params.limit;
            params.pageIndex = (params.offset / params.limit) + 1;
            params.sortName = params.sort;
            params.sortOrder = params.order;
            params.productOrderId = productOrderId;
            params.productOrderDetailType = '1';

            return params
        },//查询参数
        columns: [
            {title: '主键', field: 'customerProductId', visible: false},
            {
                title: '序号', align: 'left', valign: 'middle', width: '50',
                formatter: function (value, row, index) {
                    return index + 1;
                }
            },
            {title: '产品名称', field: 'orderDetailName', align: 'left', valign: 'middle', class: 'ellipsis'},
            {title: '产品原价', field: 'productOriginalPrice', align: 'left', valign: 'middle',},
            {title: '产品单价', field: 'productUnitPrice', align: 'left', valign: 'middle',},
            {title: '产品会员价', field: 'productMemberPrice', align: 'left', valign: 'middle',},
            {title: '产品成交价', field: 'productFinalPrice', align: 'left', valign: 'middle',},
            {title: '产品数量', field: 'productQuantity', align: 'left', valign: 'middle',},
            {title: '产品优惠金额', field: 'productPreferentialPrice', align: 'left', valign: 'middle',
                formatter: function (value, row) {
                    if (value < 0) {
                        return 0;
                    } else {
                        return value * row.productQuantity;
                    }
                }
            },
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function (data) {
            // console.log(data)
        },
        onLoadError: function (status) {
            if (status == 403) {
                $.alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                $.alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}

function promptInfo(title, content, fun) {
    $.alert({
        title,
        content,
        buttons: {
            confirm: {
                text: '确认',
                btnClass: 'btn-primary',
                action: function () {
                    fun && fun();
                }
            }
        }
    });
}

/**
 * 功能：关联订单
 * */
function relationModal(transactionNo) {
    $('#relationModal').modal('show');
    $('#relationTransactionNo').val(transactionNo);
}

function searchOrder(orderNumber) {
    $.ajax({
        url: '/bankFlow/queryByOrderNumber',
        type: 'GET',
        dataType: 'json',
        data: {
            orderNumber
        },
        success:(function(data) {
            if(data.code == '000000'){
                $('.search-group').addClass('search-result');
                $('.relationModal .well, .relationModal .modal-footer').show();

                var relationProductOrderId = data.data.productOrderId;              // 订单ID
                var orderDetailVO = data.data.orderDetailVO;                        // 订单详情数据
                var productOrderDetailList = data.data.productOrderDetailList;      // 产品订单

                $('#relationProductOrderId').val(relationProductOrderId);

                // 订单状态--1:等待回款;2:已完成;3:作废;4:部分回款（回款维护）
                var orderStatus;
                switch (orderDetailVO.orderStatus) {
                    case '1':
                        orderStatus = '<span class="label label-warning-light">等待回款</span>';
                        break;
                    case '2':
                        orderStatus = '<span class="label label-success-light">已完成</span>';
                        break;
                    case '3':
                        orderStatus = '<span class="label label-brown-light">作废</span>';
                        break;
                    case '4':
                        orderStatus = '<span class="label label-info-light">部分回款</span>';
                        break;
                }
                $('#relationInfoOrderNumber').html(orderDetailVO.orderNumber);
                $('#relationInfoContractNumber').html(orderDetailVO.contractNumber);
                $('#relationInfoOrderStatus').html(orderStatus);
                $('#relationInfoCustomerName').html(orderDetailVO.customerName);
                $('#relationInfoUserName').html(orderDetailVO.userName);
                $('#relationInfoCompanyName').html(orderDetailVO.companyName);
                $('#relationInfoCreateTm').html(orderDetailVO.createTm);
                $('#relationProductTable').bootstrapTable('destroy');
                $('#relationProductTable').bootstrapTable({
                    classes: 'table table-bordered table-hover table-striped',
                    data: productOrderDetailList,
                    dataType: 'json',                                   // 数据类型
                    striped: true,                                      // 是否显示行间隔色
                    sortable: true,                                     // 是否启用排序
                    sortOrder: 'desc',                                  // 排序方式
                    sortName: 'createTm',                               // 排序字段
                    pagination: true,                                   // 是否显示分页
                    undefinedText: '-',                                 // cell没有值时显示
                    sidePagination: 'client',                           // 分页方式：client客户端分页，server服务端分页
                    uniqueId: 'orderDetailName',
                    idField: 'orderDetailName',
                    pageNumber: 1,
                    pageSize: 5,                                        // 每页的记录行数
                    pageList: [5, 10, 20],                              // 可供选择的每页的行数

                    fixedColumns: true,     // 冻结列
                    fixedNumber: 1,         // 左侧固定列
                    fixedRightNumber: 2,    // 右侧固定列

                    queryParams: function (params) {                    // 查询参数
                        params.pageSize = params.limit;
                        params.pageIndex = (params.offset / params.limit) + 1;
                        params.sortName = params.sort;
                        params.sortOrder = params.order;
                        return params
                    },
                    columns: [
                        {title: '主键', field: 'customerProductId', visible: false},
                        {
                            title: '序号', align: 'left', valign: 'middle', width: '50',
                            formatter: function (value, row, index) {
                                return index + 1;
                            }
                        },
                        {title: '产品名称', field: 'orderDetailName', align: 'left', valign: 'middle', class: 'ellipsis'},
                        {title: '产品原价', field: 'productOriginalPrice', align: 'left', valign: 'middle',},
                        {title: '产品单价', field: 'productUnitPrice', align: 'left', valign: 'middle',},
                        {title: '产品会员价', field: 'productMemberPrice', align: 'left', valign: 'middle',},
                        {title: '产品成交价', field: 'productFinalPrice', align: 'left', valign: 'middle',},
                        {title: '产品数量', field: 'productQuantity', align: 'left', valign: 'middle',},
                        {title: '产品优惠金额', field: 'productPreferentialPrice', align: 'left', valign: 'middle',
                            formatter: function (value, row) {
                                if (value < 0) {
                                    return 0;
                                } else {
                                    return value * row.productQuantity;
                                }
                            }
                        },
                    ],
                    responseHandler: function (result) {
                        if (result.code == "000000") {
                            var obj = {
                                "rows": result.data,
                                "total": result.totalRecords//总条数
                            };
                        } else {
                            var obj = {
                                "total": 0,
                                "rows": [],
                            }
                        }
                        return obj;
                    },
                    onLoadSuccess: function (data) {
                        // console.log(data)
                    },
                    onLoadError: function (status) {
                        if (status == 403) {
                            $.alert("权限不足！禁止访问！");
                        } else {
                            //加载失败时执行
                            $.alert("加载失败！");
                        }
                    },
                    formatLoadingMessage: function () {
                        return "请稍等，加载中...";
                    },
                    formatNoMatches: function () {
                        return '无符合条件的记录';
                    },
                });
            }else{
                promptInfo('提示', '查询订单失败');
                $('.search-group').removeClass('search-result');
                $('.relationModal .well, .relationModal .modal-footer').hide();
                $('#relationModal input').val('');
            }
        }),
        error:(function() {
            promptInfo('提示', '查询订单出错，请重试！');
            $('.search-group').removeClass('search-result');
            $('.relationModal .well, .relationModal .modal-footer').hide();
            $('#relationModal input').val('');
        })
    })
}

function relationAction() {
    var relationData = {
        transactionNo: $('#relationTransactionNo').val(),   // 流水号
        productOrderId: $('#relationProductOrderId').val()  // 订单id
    }
    $.ajax({
        url: '/bankFlow/relatedOrder',
        type: 'POST',
        dataType: 'json',
        data: relationData,
        success:(function(data) {
            if(data.code == '000000'){
                promptInfo('提示', '关联订单成功！', resetModal);
            } else if (data.code == 'RM0002') {
                promptInfo('关联失败', '录入回款总金额不能大于订单总金额', resetModal);
                console.log('回款金额不正确');
            } else if (data.code == 'RM0003') {
                promptInfo('关联失败', '该合同审核未审核/审核不通过，不能录入回款', resetModal);
                console.log('合同审核未通过，不能回款');
            } else if (data.code == 'RM0004') {
                promptInfo('关联失败', '该比订单已经作废，不能修改回款信息', resetModal);
                console.log('订单作废不能录回款');
            } else {
                promptInfo('提示', '关联订单失败，请重试！', resetModal);
            }
        }),
        error:(function() {
            promptInfo('提示', '关联订单出错，请重试！');
        })
    })
}

function resetModal() {
    $('#relationModal').modal('hide');
    $('#financialFlow').bootstrapTable('refresh');
}
//导入流水详情
function importDetail(data){
    $("#importRecord").text(data.successCount+data.failureCount);
    $("#successRecord").text(data.successCount);
    $("#errorRecord").text(data.failureCount);
    errorDetailTable(data.bankDetail);
    $("[data-toggle='tooltip']").tooltip({
        "container": 'body',
    })
}
//流水导入错误列表
function errorDetailTable(data) {
    $('#errorDetail').bootstrapTable('destroy');
    $('#errorDetail').bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        height:400,
        data:data,
        striped: true,                                      // 是否显示行间隔色
        sortable: true,                                     // 是否启用排序
        sortOrder: 'desc',                                  // 排序方式
        sortName: 'createTm',                               // 排序字段
        cache: false,                                       // 是否使用缓存
        showColumns: false,                                 // 显示隐藏列
        showRefresh: false,                                 // 显示刷新按钮
        showToggle: false,                                  // 切换显示样式
        showFooter: false,                                  // 显示Table脚部
        pagination: false,                                   // 是否显示分页
        showPaginationSwitch: false,                        // 是否显示分页按钮
        clickToSelect: false,                                // 是否启用点击选中行
        maintainSelected: true,                             // 分页是否保留选中
        singleSelect: false,
        undefinedText: '-',                                 // cell没有值时显示
        sidePagination: 'client',                           // 分页方式：client客户端分页，server服务端分页
        uniqueId: 'isRepeat',
        idField: 'isRepeat',
        columns: [
            {title: '主键', field: 'customerProductId', visible: false},
            {title: '交易流水号(必填)', field: 'transactionNo', align: 'left', valign: 'middle'},
            {title: '交易日期(必填)', field: 'transactionDate', align: 'left', valign: 'middle'},
            {title: '收款方账号(必填)', field: 'payeeAcount', align: 'left', valign: 'middle'},
            {title: '收款方名称(必填)', field: 'payeeName', align: 'left', valign: 'middle'},
            {title: '对方单位名称(必填)', field: 'oppositeCompany', align: 'left', valign: 'middle'},
            {title: '对方银行名称', field: 'oppositeBank', align: 'left', valign: 'middle'},
            {title: '对方银行账号', field: 'oppositeBankAccount', align: 'left', valign: 'middle'},
            {title: '贷方金额(必填)', field: 'creditMoney', align: 'left', valign: 'middle'},
            {title: '所属分公司', field: 'companyName', align: 'left', valign: 'middle'},
            {title: '摘要', field: 'abstracts', align: 'left', valign: 'middle', formatter : function(value, row, index, field){
                    var values=value?value:'-';
                    return `<span style='display: inline-block;overflow: hidden;text-overflow: ellipsis;max-width:inherit;white-space: nowrap;' data-toggle='tooltip' data-placement="top" data-original-title="${values}">${values}</span>`;
                },
                cellStyle : function(value, row, index, field){
                    return {
                        css: {
                            "white-space": "nowrap",
                            "text-overflow": "ellipsis",
                            "overflow": "hidden",
                            "max-width":"200px"
                        }
                    };
                }},
            {title: '错误原因', field: 'errorReason', align: 'left', valign: 'middle'},
            {title: '操作', field: 'operate', align: 'right', valign: 'middle',events: operateEvents,formatter: format.editOperate},
        ],
        formatNoMatches: function () {
            return '无符合条件的记录';
        }
    });
}

//数值转换为会计数值格式
function toThousandsFormates(num) {
    // 判断传进来的数字是否为非空数字

    if (!isNaN(parseFloat(num))) {

        var newNum = Number(Number(num).toFixed(2)).toLocaleString('zh', { minimumFractionDigits: 0 })

        return newNum



    } else {

        return ''

    }

}
//自定义时间段
function customInputToggle(){
    $("#customInput").toggle()
}
function getMonthTotal(){
    let date=new Date();
    let year=$('#yearSelect').val()?$('#yearSelect').val():String(date.getFullYear());
    let month=$('#monthSelect').val()?$('#monthSelect').val():String(date.getMonth()+1);
    $.ajax({
        url: '/bankFlow/queryMonthTotal?queryYear='+year+'&queryMonth='+month,
        type: 'GET',
        dataType: 'json',
        contentType: false,
        async : false,
        data:{},
        success:(function(data) {
            if(data.code=='000000'){
                $("#currentMonthImportMoney").text(toThousandsFormates(data.data.monthAmountMoney));
                $("#currentMonthUnassignedMoney").text(toThousandsFormates(data.data.monthUnallocatedMoney));
                isBranchCompany=data.data.isBranchCompany;
                if(isBranchCompany=='Y'){
                    /*$('#selectCompany').hide();*/
                    $("#branchCompany").hide();
                }else{
                    /*$('#selectCompany').show();*/
                    $("#branchCompany").show();
                }
            }

        })
    });

}
//重置
function reset(){
    $("#advancedFilter input").val('');
    $("#advancedFilter select").val('').selectpicker('refresh');
}
//高级筛选
function submitAdvance(){
    financialFlow(4);
    closeFilterContainer();
}
/*新增流水功能*/
let editIndex='';
function openAddFlowModal(){
    validatorStart('addFlowForm',addFlowFormValidator);
    var data=arguments[0]?arguments[0]:'';
    if(!!data){
        editIndex=arguments[1];
        $("#addTransactionNo").val(data.transactionNo);
        $("#addTransactionDate").val(data.transactionDate);
        $("#addPayeeAcount").val(data.payeeAcount);
        $("#addPayeeName").val(data.payeeName);
        $("#addOppositeCompany").val(data.oppositeCompany);
        $("#addOppositeBank").val(data.oppositeBank);
        $("#addOppositeBankAccount").val(data.oppositeBankAccount);
        $("#addCreditMoney").val(data.creditMoney);
        $("#addCompanySelect").val(getCompanyId(companyList,data.companyName)).selectpicker('refresh');
        $("#addAbstracts").val(data.abstracts);
    }else{
        editIndex='';
        $("#addFlowModal input").val('');
        $("#addFlowModal textarea").val('');
        $('#addCompanySelect').val('').selectpicker('refresh');
    }
    $("#addFlowModal").modal('show');
}
function addFlow(){
    var flag = bootstrapValidatorFlag('addFlowForm');
    if(!flag){
        return;
    }
    var params={
        transactionNo:$.trim($("#addTransactionNo").val()),
        transactionDate:$.trim($("#addTransactionDate").val()),
        abstracts:$.trim($("#addAbstracts").val()),
        payeeAcount:$.trim($("#addPayeeAcount").val()),
        payeeName:$.trim($("#addPayeeName").val()),
        oppositeCompany:$.trim($("#addOppositeCompany").val()),
        oppositeBank:$.trim($("#addOppositeBank").val()),
        oppositeBankAccount:$.trim($("#addOppositeBankAccount").val()),
        creditMoney:$.trim($("#addCreditMoney").val()),
        companyName:$("#addCompanySelect").find('option:selected').text()
    };
    $.ajax({
        url: '/bankFlow/insert',
        type: 'POST',
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(params),
        success:(function(data) {
            if(data.code=='000000'){
                $.alert("新增成功");
                financialFlow(1);
                getMonthTotal();
                $("#addFlowModal").modal('hide');
                if(editIndex!==""){
                    errorData.splice(editIndex,1)
                    errorDetailTable(errorData);
                    $("[data-toggle='tooltip']").tooltip({
                        "container": 'body',
                    })
                }
            }else{
                $.alert(data.message);
            }

        })
    });

}
//表单校验
function addFlowFormValidator(){
    $('#addFlowForm').bootstrapValidator({
        fields: {
            addTransactionNo: {
                validators: {
                    notEmpty: {
                        message: '交易流水号不能为空'
                    }
                }
            },
            addTransactionDate: {
                validators: {
                    notEmpty: {
                        message: '交易日期不能为空'
                    }
                }
            },
            addPayeeAcount: {
                validators: {
                    notEmpty: {
                        message: '收款方账号不能为空'
                    },
                    callback: {
                        message: '账号不能存在汉字',
                        callback: function(value,validator,$field){
                            var reg = /[\u4E00-\u9FA5]/g
                            if (reg.test(value)) {
                                return false;
                            }
                            return true;

                        }
                    }
                }

            },
            addOppositeBankAccount: {
                validators: {
                    callback: {
                        message: '账号不能存在汉字',
                        callback: function(value,validator,$field){
                            var reg = /[\u4E00-\u9FA5]/g
                            if (reg.test(value)) {
                                return false;
                            }
                            return true;

                        }
                    }
                }
            },
            addPayeeName: {
                validators: {
                    notEmpty: {
                        message: '收款方名称不能为空'
                    },
                    callback: {
                        message: '名称不能是一串数字',
                        callback: function(value,validator,$field){
                            var reg = /^\d+$|^\d+[.]?\d+$/;
                            if (reg.test(value)) {
                                return false;
                            }
                            return true;

                        }
                    }
                }
            },
            addOppositeCompany: {
                validators: {
                    notEmpty: {
                        message: '对方单位名称不能为空'
                    },
                    callback: {
                        message: '名称不能是一串数字',
                        callback: function(value,validator,$field){
                            var reg = /^\d+$|^\d+[.]?\d+$/;
                            if (reg.test(value)) {
                                return false;
                            }
                            return true;

                        }
                    }
                }
            },
            addOppositeBank:{
                validators: {
                    callback: {
                        message: '名称不能是一串数字',
                        callback: function(value,validator,$field){
                            var reg = /^\d+$|^\d+[.]?\d+$/;
                            if (reg.test(value)) {
                                return false;
                            }
                            return true;

                        }
                    }
                }
            },
            addCreditMoney: {
                validators: {
                    notEmpty: {
                        message: '贷方金额不能为空'
                    },
                    // callback: {
                    //     message: '贷方金额为大于0的数字',
                    //     callback: function(value,validator,$field){
                    //         if(!!value){
                    //             if(value.replaceAll(',','')>0){
                    //                 return true
                    //             }else{
                    //                 return false
                    //             }
                    //         }else{
                    //             return true
                    //         }
                    //
                    //     }
                    //
                    // }
                }
            },
            addCompanySelect: {
                validators: {
                    notEmpty: {
                        message: '所属分公司不能为空'
                    }
                }
            }
        }
    })
}
//校验是否通过
function bootstrapValidatorFlag(formId){
    var bootstrapValidator = $(`#${formId}`).data('bootstrapValidator');
    bootstrapValidator.validate();
    return bootstrapValidator.isValid()
}
function validatorStart(formId,validatorFun){
    var reasonFormValidator = $(`#${formId}`).data('bootstrapValidator');
    if (reasonFormValidator) {
        $(`#${formId}`).data('bootstrapValidator').destroy();
        $(`#${formId}`).data('bootstrapValidator', null);
    }
    validatorFun()
}
//导出银行流水
function exportData(){
    var $btn = $(".exportButton").button('loading');

    var paramsData = {};

    paramsData.queryYear = $("#yearSelect").val();
    paramsData.queryMonth = $("#monthSelect").val();
    paramsData.customStartDate = $("#startTm").val();
    paramsData.customEndDate = $("#endTm").val();
    paramsData.transactionNo = $.trim($('#transactionNo').val());//交易流水
    paramsData.companyId=$("#companySelect").val();
    paramsData.relationState=$("#relationState").val();
    paramsData.oppositeCompany=$.trim($("#oppositeCompany").val());
    // if(exportType==1){
    //     paramsData.queryYear = $("#yearSelect").val();
    //     paramsData.queryMonth = $("#monthSelect").val();
    //     customTimeClear();
    //     $("#transactionNo").val("");
    //     reset();
    //     closeFilterContainer();
    // }else if(exportType==2){
    //     paramsData.customStartDate = $("#startTm").val();
    //     paramsData.customEndDate = $("#endTm").val();
    //     yearMonthClear();
    //     $("#transactionNo").val("");
    //     reset();
    //     closeFilterContainer();
    // }else if(exportType==3){
    //     paramsData.customStartDate = $("#startTm").val();
    //     paramsData.customEndDate = $("#endTm").val();
    //     paramsData.queryYear = $("#yearSelect").val();
    //     paramsData.queryMonth = $("#monthSelect").val();
    //     paramsData.transactionNo = $.trim($('#transactionNo').val());//交易流水
    //     // yearMonthClear();
    //     // customTimeClear();
    //     reset();
    //     closeFilterContainer();
    // }else if(exportType==4){
    //     //高级筛选
    //     yearMonthClear();
    //     customTimeClear();
    //     $("#transactionNo").val("");
    //     paramsData.companyId=$("#companySelect").val();
    //     paramsData.relationState=$("#relationState").val();
    //     paramsData.oppositeCompany=$.trim($("#oppositeCompany").val());
    // }

    // json转url参数
    var parseParam = function(param, key) {
        var paramStr = '';
        if (param instanceof String || param instanceof Number || param instanceof Boolean) {
            paramStr += '&' + key + '=' + param;
        } else {
            $.each(param, function(i) {
                var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i);
                paramStr += '&' + parseParam(this, k);
            });
        }
        return paramStr.substr(1);
    };
    var that = this;
    paramsData = parseParam(paramsData);
    var page_url = '/bankFlow/exportBankFlowData?'+paramsData;
    var req = new XMLHttpRequest();
    req.open("get", page_url, true);
    req.responseType = "blob";
    req.onreadystatechange = function () {
        if (req.readyState === 4 && req.status === 200) {
            console.log(req)
            if(/\/login$/.test(req.responseURL)){
                $.alert("登录超时，请重新登录")
            }else{
                var fileName = '银行流水' + new Date(new Date()).Format("yyyy-MM-dd hh_mm_ss") + '.xlsx';
                if (typeof window.chrome !== 'undefined') {
                    // Chrome version
                    var link = document.createElement('a');
                    link.href = window.URL.createObjectURL(req.response);
                    link.download = fileName;
                    link.click();
                } else if (typeof window.navigator.msSaveBlob !== 'undefined') {
                    // IE version
                    var blob = new Blob([req.response], { type: 'application/force-download' });
                    window.navigator.msSaveBlob(blob, fileName);
                } else {
                    // Firefox version
                    var file = new File([req.response], fileName, { type: 'application/force-download' });
                    window.open(URL.createObjectURL(file));
                }
            }
            $btn.button('toggle');
            $btn.button('reset');
            $("#exportTipsModal").modal('hide');
        }
    };
    req.send();
}

function showExportTipsModal(type){
    // exportType = type;
    $("#exportTipsModal").modal('show');
}

function getBankRelateSwitch(){
    $.ajax({
        url: '/systemParameterSetting/selectSystemParameterSetting',
        type: 'GET',
        dataType: 'json',
        success:(function(data) {
            if(data.code=='000000'){
                if(data.data.bankImportSwitch=='N'){
                    $("#importFlowBtn").hide()
                }
            }else{
                $.alert(data.message)
            }
        }),
        error:(function(data) {
            $.alert('请求失败')
        })
    })
}
/*白名单*/
//获取当前用户信息
function getCurrentInfo(){
    $.ajax({
        url: '/sysCompany/currentInfo',
        type: 'GET',
        dataType: "json",
        contentType: "application/x-www-form-urlencoded",
        data: {},
        success: (function (data) {
            if(data.code=='000000'){
                if(data.data.deptId == 3){
                    $('#setWhiteListBtn').show()
                }
            }
        }),
        error: (function (res) {
            $.alert('操作失败，请稍后再试!');
        })
    });
}
//表单校验
function addWhiteListFormValidator(){
    $('#addWhiteListForm').bootstrapValidator({
        fields: {
            whiteName: {
                validators: {
                    notEmpty: {
                        message: '对方单位名称不能为空'
                    },
                    callback: {
                        message: '名称不能是一串数字',
                        callback: function(value,validator,$field){
                            var reg = /^\d+$|^\d+[.]?\d+$/;
                            if (reg.test(value)) {
                                return false;
                            }
                            return true;

                        }
                    }
                }
            }
        }
    })
}

function addWhiteList(){
    var flag=bootstrapValidatorFlag('addWhiteListForm');
    if(!flag){
        return;
    }
    var params={
        whiteListName:$.trim($("#whiteName").val())
    };
    $.ajax({
        url:'/bankFlow/whiteList/add',
        method:'POST',
        /*contentType: "application/json;charset=utf-8",
        data: JSON.stringify(params),*/
        data:params,
        success:(function(result){
            if(result.code=='000000'){
                $.alert({
                    'title':'提示',
                    'content':'新增成功'
                })
                $("#whiteListModal").modal('hide');
                whiteListTableInit()
            }else{
                $.alert({
                    'title':'提示',
                    'content':result.message
                })
            }

        }),
        error:(function(result){
                $.alert({
                    'title':'提示',
                    'content':result.message
                })
        })

    })
}
function openWhiteList(){
    $("#whiteListTableModal").modal('show');
    whiteListTableInit()
}
function setWhiteList(){
    $("#whiteName").val('');
    validatorStart('addWhiteListForm',addWhiteListFormValidator);
    $("#whiteListModal").modal('show');
}
function whiteListTableInit()  {
    $('#whiteListTable').bootstrapTable('destroy');
    $('#whiteListTable').bootstrapTable({
        classes: 'table table-noborder table-hover',
        url: '/bankFlow/whiteList/query',
        method: 'get',                                      // 请求方式
        contentType: 'application/x-www-form-urlencoded',   // 请求内容类型
        dataType: 'json',                                   // 数据类型
        striped: true,                                      // 是否显示行间隔色
        sortable: true,                                     // 是否启用排序
        sortOrder: 'desc',                                  // 排序方式
        sortName: 'createTm',                               // 排序字段
        cache: false,                                       // 是否使用缓存
        showColumns: false,                                 // 显示隐藏列
        showRefresh: false,                                 // 显示刷新按钮
        showToggle: false,                                  // 切换显示样式
        showFooter: false,                                  // 显示Table脚部
        pagination: true,                                   // 是否显示分页
        showPaginationSwitch: false,                        // 是否显示分页按钮
        clickToSelect: true,                                // 是否启用点击选中行
        maintainSelected: true,                             // 分页是否保留选中
        singleSelect: false,
        undefinedText: '-',                                 // cell没有值时显示
        sidePagination: 'server',                           // 分页方式：client客户端分页，server服务端分页
        uniqueId: '',
        idField: '',
        pageNumber: 1,
        pageSize: 10,                           // 每页的记录行数
        pageList: [5,10],                           // 可供选择的每页的行数
/*
        fixedColumns: true,     // 冻结列
        fixedNumber: 2,         // 左侧固定列
        fixedRightNumber: 2,    // 右侧固定列*/

        queryParams: function (params) {
            params.pageSize = params.limit;
            params.pageIndex = (params.offset / params.limit) + 1;
            return params
        },  // 查询参数
        columns: [
            {title: '过滤名称', field: 'whiteListName'},
            {title: '创建人', field: 'createPeopleName'},
            {title: '创建时间', field: 'createTime'}
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function (data) {
            $("[data-toggle='tooltip']").tooltip({
                "container": 'body',
            })
        },
        onLoadError: function (status) {
            if (status == 403) {
                $.alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                $.alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}
/*
function whiteListTableInit() {
    //type=1:根据 年、月查询；type=2:根据自定义时间查询；type=3:流水号查询;type=4:高级筛选
    $('#whiteListTable').bootstrapTable('destroy');
    $('#whiteListTable').bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        data:[{'whiteListName':'111','createTime':'','createPeopleName':''}],
        striped: true,                      // 是否显示行间隔色
        undefinedText: '-',                 // cell没有值时显示
        pagination: true,                   // 是否显示分页
        pageSize: '5',                      // 每页的记录行数
        pageNumber: 1,                      // 初始化加载第1页，默认第1页
        pageList: ['5', '10'],              // 可供选择的每页的行数
        columns: [
            {title: '过滤名称', field: 'whiteListName',formatter:setWhiteFormatter.nameFormatter},
            {title: '时间', field: 'createTime',formatter:setWhiteFormatter.timeFormatter},
            {title: '创建人', field: 'createPeopleName', formatter:setWhiteFormatter.createNameFormatter},
            {title: '操作', field: 'operate', align: 'right', valign: 'middle',events: operateEvents,formatter:setWhiteFormatter.operate},
        ]
    });
}
var setWhiteFormatter={
    nameFormatter:function(value,row){
        if(row.editFlag){
            var html = `<input class="form-control" type="text" placeholder="请输入过滤名称" id="names" name="names" value="${value}">`;
            return html;
        }else{
            return value;
        }
    },
    timeFormatter:function(value,row){
        if(row.editFlag){
            var html = `<input class="form-control" type="text" placeholder="选择时间" id="times" name="times" value="${value}">`;
            return html;
        }else{
            return value;
        }
    },
    createNameFormatter:function(value,row){
        if(row.editFlag){
            var html = `<input class="form-control" type="text" placeholder="请输入创建人" id="createNames" name="createNames" value="${value}">`;
            return html;
        }else{
            return value;
        }
    },
    operate:function(value, row) {
        if(row.editFlag){
            var html = '<button type="button" class="btn btn-default" id="save">保存</button>';
            return html;
        }else{
            var html = '<button type="button" class="btn btn-default" id="edit">编辑</button>';
            return html;
        }
    }
}*/
